#pragma once
#ifndef SYPX_CANVASDESKTOP
#define SYPX_CANVASDESKTOP

#include "Canvas.h"

//SFML forward declaration
namespace sf
{
	class Window;
}

namespace SypX
{
	///CanvasDesktopGL implements Canvas creation and manipulation for Desktops(Windows/MacOSX/Linux) for OpenGL. 	
	class SYPXAPI CanvasDesktopGL : public Canvas
	{
	public:
		///Canvas constructor
		CanvasDesktopGL(UInt width = 1024, UInt height = 768, UInt color = 32, UInt depth = 24, bool fullscreen = false);
		///Canvas deconstructor
		virtual ~CanvasDesktopGL();
		///Set Canvas attributes(new attributes). (Warning : This will cause the window/context to be destroyed and recreated)
		virtual void resetCanvas(UInt width = 1024, UInt height = 768, UInt color = 32, UInt depth = 24, bool fullscreen = false);
		///Sets Canvas(Window) size
		virtual void resize(UInt width, UInt height);
		///Virtual Swap Buffers method
		virtual void swapBuffers();
		///Returns an event from the Event que
		virtual Event getEvent();	
		///Returns whether the Window/Application is still open
		virtual bool isOpen();
		///Returns elapsed time since previous frame
		virtual float getElapsedTime();
	private:
		sf::Window* sfmlApp;				

	};

}

#endif